package com.chat.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.chat.admin.domain.DTO.ADD.AddAuthorityDTO;
import com.chat.admin.domain.DTO.AuthorityDTO;
import com.chat.admin.domain.DTO.EDIT.EditAuthorityDTO;
import com.chat.admin.domain.VO.AuthorityVO;
import com.chat.common.entity.Authority;
import com.chat.common.form.ListForm;
import com.chat.common.vo.R;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author weikjie
 * @since 2024-04-14
 */
public interface IAuthorityService extends IService<Authority> {

    /**
     * 获取全部的权限列表
     * @param authorityDTO
     * @return
     */
    R<ListForm<AuthorityVO>> getAuthorityList(AuthorityDTO authorityDTO);

    /**
     * 插入新的权限
     * @param addAuthorityDTO
     * @return
     */
    R insertAuthority(AddAuthorityDTO addAuthorityDTO);

    /**
     * 更新权限
     * @param editAuthorityDTO
     * @return
     */
    R updateAuthority(EditAuthorityDTO editAuthorityDTO);

    /**
     * 禁用权限
     * @param ID
     * @return
     */
    R<?> DisableAuthority(Long ID);

    /**
     * 启用权限
     * @param ID
     * @return
     */
    R<?> EnableAuthority(Long ID);

    /**
     * 获取正常未禁用的权限
     * @return
     */
    List<Authority> getStateAuthorities();

    /**
     * 判断权限列表是否都是可用的
     * @param authoritiesIds
     * @return
     */
    Boolean areAuthoritiesValid(List<Long> authoritiesIds);

    /**
     * 获取正常未禁用的权限set集合
     * @return
     */
    Map<Long, Authority> getStateAuthoritiesMap();
}
